package com.example.aiscripteditorserver.common.tools.match;

import lombok.extern.slf4j.Slf4j;
import org.opencv.core.*;
import org.opencv.imgcodecs.Imgcodecs;

@Slf4j
public class MultiScaleTemplateMatcher {

    // 加载OpenCV本地库（必须放在main方法前，确保初始化）
    static {
        // 方式1：默认加载（需确保项目已配置OpenCV库路径）
        // System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        // 方式2：若默认加载失败，使用绝对路径加载（替换为你的OpenCV库文件路径）
        System.load("E:\\IdeaProjects\\ai-script-editor-server\\spring-boot\\src\\main\\resources\\libs\\opencv_java4120.dll"); // Windows示例
        
    }

    public static void main(String[] args) {
        try {

            double threshold = 0.8; // 匹配度阈值（0~1，值越高匹配越严格）
            double startScale = 0.5; // 最小缩放比例（50%）
            double endScale = 1.5;   // 最大缩放比例（150%）
            double step = 0.05;      // 缩放步长（步长越小精度越高，速度越慢）
            
            // 1. 核心参数配置（根据你的需求修改）
            String saveResultPath = "F:\\UploadFilesDir\\ai_script_editor\\match_result.png"; // 结果图片保存路径（生成的图片）
            
            // 2. 获取屏幕截图（大图）并转换为OpenCV的Mat格式
            Mat sourceImage = Imgcodecs.imread("F:\\UploadFilesDir\\ai_script_editor\\big1.jpg");
            if (sourceImage.empty()) {
                System.out.println("错误：屏幕截图获取失败！");
                return;
            }

            // 2. 加载模板图片 (Mat)
            Mat templateImage = Imgcodecs.imread("F:\\UploadFilesDir\\ai_script_editor\\small1.png");
            // 3. 加载模板图片（小图）
            if (templateImage.empty()) {
                System.out.println("错误：模板图片加载失败，请检查路径是否正确！");
                return;
            }

            ImgMatcherUtils.multiScaleMatch(sourceImage, templateImage, saveResultPath, startScale, endScale, step, threshold);
            

        } catch (Exception e) {
            System.out.println("程序运行异常：");
            e.printStackTrace();
        }
    }
    
    
    
    
    

    
}